#include <cmath>
#include <iostream>
#include <type_traits>
#include <vector>
using namespace std;

//class cards
//{
//public:
//    cards(const int n)
//    {
//        _n = n;
//        cinv(v1);
//        cinv(v2);
//    }
//    void shuffle(int k)
//    {
//        while (k--)
//        {
//            vector<int> v;
//            for (int i = 0; i < _n; i++)
//            {
//                v.push_back(v1[i]);
//                v.push_back(v2[i]);
//            }
//            for (int i = 0; i < _n; i++)
//            {
//                v1[i] = v[i];
//            }
//            for (int i = 0; i < _n; i++)
//            {
//                v2[i] = v[i + _n];
//            }
//        }
//    }
//    void print()
//    {
//        _print(v1);
//        _print(v2);
//        cout << endl;
//    }
//private:
//    void _print(vector<int>& v)
//    {
//        for (auto s : v)
//        {
//            cout << s << " ";
//        }
//    }
//    void cinv(vector<int>& v)
//    {
//        int k;
//        for (int i = 0; i < _n; i++)
//        {
//            cin >> k;
//            v.push_back(k);
//        }
//    }
//    int _n;
//    vector<int> v1;
//    vector<int> v2;
//};
//
//int main() {
//    int n, k;
//    while (cin >> n >> k)
//    {
//        cards card(n);
//        card.shuffle(k);
//        card.print();
//    }
//    return 0;
//}


//struct Node
//{
//    Node* _next;
//    Node* _pre;
//    int _val;
//    Node(const int& val) :_next(nullptr), _pre(nullptr), _val(val)
//    {
//    }
//};
//
//class MP3
//{
//public:
//    MP3(const int& n)
//    {
//        _n = n;
//        _root = new Node(0);
//        Node* cur = _root;
//        for (int i = 0; i < n; i++)
//        {
//            Node* newnode = new Node(i + 1);
//            cur->_next = newnode;
//            newnode->_pre = cur;
//            newnode->_next = _root;
//            cur = cur->_next;
//            _root->_pre = cur;
//        }
//        _cur = _root->_next;
//    }
//    void move(const char& str)
//    {
//        if (str == 'U')
//        {
//            _cur = _cur->_pre;
//            if (_cur == _root)
//            {
//                _cur = _cur->_pre;
//            }
//        }
//        else
//        {
//            _cur = _cur->_next;
//            if (_cur == _root)
//            {
//                _cur = _cur->_next;
//            }
//        }
//    }
//    void print()
//    {
//        Node* cur = nullptr;
//        int num = 4;
//        if (_n < 4)
//        {
//            cur = _root->_next;
//            num = _n;
//        }
//        else
//        {
//            int n = 0;
//            n = (_cur->_val / 4) * 4;
//            if (n + 4 > _n)
//            {
//                num = _n - n;
//            }
//            n = _cur->_val - n;
//            cur = _cur;
//            while (n--)
//            {
//                cur = cur->_pre;
//            }
//        }
//        _print(cur, num);
//    }
//private:
//    void _print(Node* cur, int num)
//    {
//        while (num--)
//        {
//            cout << cur->_val << " ";
//            cur = cur->_next;
//        }
//        cout << endl;
//        cout << _cur->_val << endl;
//    }
//    int _n;
//    Node* _cur;
//    Node* _root;
//};
//
//int main() {
//    int n;
//    cin >> n;
//    MP3 m(n);
//    string str;
//    cin >> str;
//    n = str.size();
//    for (int i = 0; i < n; i++)
//    {
//        m.move(str[i]);
//    }
//    m.print();
//    return 0;
//}


//struct Node
//{
//    Node* _next;
//    Node* _pre;
//    int _val;
//    Node(const int& val) :_next(nullptr), _pre(nullptr), _val(val)
//    {
//    }
//};
//
//class MP3
//{
//public:
//    MP3(const int& n)
//    {
//        _n = n;
//        _root = new Node(0);
//        Node* cur = _root;
//        for (int i = 0; i < n; i++)
//        {
//            Node* newnode = new Node(i + 1);
//            cur->_next = newnode;
//            newnode->_pre = cur;
//            newnode->_next = _root;
//            cur = cur->_next;
//            _root->_pre = cur;
//            _pid = 1;
//        }
//        _cur = _root->_next;
//    }
//    void move(const char& str)
//    {
//        if (_cur == _root->_next && str == 'U')
//        {
//            _pid = 4;
//            _move(str);
//        }
//        else if (_cur == _root->_pre && str == 'D')
//        {
//            _pid = 1;
//            _move(str);
//        }
//        else
//        {
//            if ((_pid == 4 && str == 'D') || (str == 'U' && _pid == 1))
//            {
//                ;
//            }
//            else if (str == 'U')
//            {
//                _pid--;
//            }
//            else
//            {
//                _pid++;
//            }
//            _move(str);
//        }
//    }
//    void print()
//    {
//        if (_n <= 4)
//        {
//            next_print(_root->_next, _n);
//        }
//        else
//        {
//            int n = 4 - _pid;
//            pre_print(_cur, _pid);
//            next_print(_cur->_next, n);
//        }
//        cout << endl << _cur->_val << endl;
//    }
//private:
//    void pre_print(Node* cur, int num)
//    {
//        while (num--)
//        {
//            cout << cur->_val << " ";
//            cur = cur->_pre;
//            if (_cur == _root)
//            {
//                _cur = _cur->_pre;
//            }
//        }
//    }
//    void next_print(Node* cur, int num)
//    {
//        while (num--)
//        {
//            cout << cur->_val << " ";
//            cur = cur->_next;
//            if (_cur == _root)
//            {
//                _cur = _cur->_next;
//            }
//        }
//    }
//    void _move(const char& str)
//    {
//        if (str == 'U')
//        {
//            _cur = _cur->_pre;
//            if (_cur == _root)
//            {
//                _cur = _cur->_pre;
//            }
//        }
//        else
//        {
//            _cur = _cur->_next;
//            if (_cur == _root)
//            {
//                _cur = _cur->_next;
//            }
//        }
//    }
//    int _n;
//    int _pid;
//    Node* _cur = nullptr;
//    Node* _root = nullptr;
//};
//
//int main() {
//    int n;
//    cin >> n;
//    MP3 m(n);
//    string str;
//    cin >> str;
//    n = str.size();
//    for (int i = 0; i < n; i++)
//    {
//        m.move(str[i]);
//    }
//    m.print();
//    return 0;
//}


struct Node
{
    Node* _next;
    Node* _pre;
    int _val;
    Node(const int& val) :_next(nullptr), _pre(nullptr), _val(val)
    {
    }
};

class MP3
{
public:
    MP3(const int& n)
    {
        _n = n;
        _root = new Node(0);
        Node* cur = _root;
        for (int i = 0; i < n; i++)
        {
            Node* newnode = new Node(i + 1);
            cur->_next = newnode;
            newnode->_pre = cur;
            newnode->_next = _root;
            cur = cur->_next;
            _root->_pre = cur;
            _pid = 1;
        }
        _cur = _root->_next;
    }
    void move(const char& str)
    {
        if (_cur == _root->_next && str == 'U')
        {
            _pid = 4;
            _move(str);
        }
        else if (_cur == _root->_pre && str == 'D')
        {
            _pid = 1;
            _move(str);
        }
        else
        {
            if ((_pid == 4 && str == 'D') || (str == 'U' && _pid == 1))
            {
                ;
            }
            else if (str == 'U')
            {
                _pid--;
            }
            else
            {
                _pid++;
            }
            _move(str);
        }
    }
    void print()
    {
        if (_n <= 4)
        {
            next_print(_root->_next, _n);
        }
        else
        {
            int n = 4 - _pid;
            Node* cur = _cur;
            while (--_pid)
            {
                cur = cur->_pre;
            }
            next_print(cur, 4);
        }
        cout << endl << _cur->_val << endl;
    }
private:
    void next_print(Node* cur, int num)
    {
        while (num--)
        {
            cout << cur->_val << " ";
            cur = cur->_next;
            if (_cur == _root)
            {
                _cur = _cur->_next;
            }
        }
    }
    void _move(const char& str)
    {
        if (str == 'U')
        {
            _cur = _cur->_pre;
            if (_cur == _root)
            {
                _cur = _cur->_pre;
            }
        }
        else
        {
            _cur = _cur->_next;
            if (_cur == _root)
            {
                _cur = _cur->_next;
            }
        }
    }
    int _n;
    int _pid;
    Node* _cur = nullptr;
    Node* _root = nullptr;
};

int main() {
    int n;
    cin >> n;
    MP3 m(n);
    string str;
    cin >> str;
    n = str.size();
    for (int i = 0; i < n; i++)
    {
        m.move(str[i]);
    }
    m.print();
    return 0;
}